import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';

dayjs.extend(utc);

// UTC是协调世界时，又称世界统一时间、世界标准时间、国际协调时间
export const formatUTC = (utc: string, format = 'YYYY-MM-DD HH:mm:ss') => {
  const time = dayjs.utc(utc).utcOffset(8).format(format);
  return time;
};

/**
 * 格式化时间
 * @param time 时间字符串
 * @returns 格式化后的时间字符串
 */
export const formatTime = (time: string) => {
  if (!time) return '';
  return dayjs(time).format('YYYY-MM-DD HH:mm:ss');
};

/**
 * 格式化日期
 * @param date 日期字符串
 * @returns 格式化后的日期字符串
 */
export const formatDate = (date: string) => {
  if (!date) return '';
  return dayjs(date).format('YYYY-MM-DD');
};

// 手机号隐藏格式化
export function formattedPhoneNumber(phone: string) {
  return phone?.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
}

// 价格格式化
export function formatPrice(price: string) {
  // 将价格转换为字符串并分割整数部分和小数部分
  let [integerPart, decimalPart] = Number(price).toFixed(2).split('.');

  // 对整数部分进行千分位分隔
  integerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');

  // 如果小数部分存在，则拼接回去
  return decimalPart ? `${integerPart}.${decimalPart}` : integerPart;
}

/**
 * 格式化金额
 * @param amount 金额数值
 * @returns 格式化后的金额字符串
 */
export const formatAmount = (amount: number) => {
  if (typeof amount !== 'number') return '0.00';
  return amount.toFixed(2);
};
